package com.aos.erp.message.service;

import com.aos.erp.common.bean.PageBean;
import com.aos.erp.common.exception.BizException;
import com.aos.erp.message.dto.MessageRecordDTO;
import com.aos.erp.message.dto.MessageRecordItemDTO;
import com.aos.erp.message.dto.MessageRecordWaitPushItemDTO;
import com.aos.erp.message.enums.PushStatus;
import com.aos.erp.message.model.MRWaitPushInfo;
import com.aos.erp.message.model.vo.MRConditionVo;
import com.aos.erp.message.model.vo.PushMessageVo;
import com.aos.erp.message.model.vo.SmsMessageVo;

import java.util.List;

public interface MessageRecordService {

    /**
     * 保存消息记录
     * @param dataInfo
     * @throws BizException
     */
    void saveRecord(PushMessageVo dataInfo) throws BizException;

    /**
     * 保存短信记录
     * @param dataInfo
     * @throws BizException
     */
    void saveSmsRecord(SmsMessageVo dataInfo) throws BizException;

    /**
     * 消息详情
     * @param dataId
     */
    MessageRecordDTO getRecordDetail(long dataId);

    /**
     * 分页查询消息列表
     * @param conditionVO
     * @return
     */
    PageBean<MessageRecordItemDTO> findByPage(MRConditionVo conditionVO);

    /**
     * 查询所有待发消息列表
     * @param conditionVO
     * @return
     */
    PageBean<MessageRecordWaitPushItemDTO> findWaitSendByPage(MRConditionVo conditionVO);

    /**
     * 查询固定条待发消息
     * @param conditionVO
     * @return
     */
    List<MRWaitPushInfo> findWaitSend(MRConditionVo conditionVO);

    /**
     * 删除消息记录
     * @param dataId
     * @throws BizException
     */
    void deleteRecord(String dataId) throws BizException;

    /**
     * 修改推送状态
     * @param mrId 记录ID
     * @param pushStatus 推送状态
     * @param pushResult 推送结果
     */
    void updatePushStatus(long mrId, PushStatus pushStatus, String pushResult);
}
